"""
应用启动脚本

这是大模型集成对话系统后端的主启动脚本。
使用 Uvicorn ASGI 服务器运行 FastAPI 应用。

主要功能：
1. 启动 FastAPI 应用
2. 配置服务器参数
3. 支持热重载（开发模式）
4. 配置日志级别
5. 启用访问日志

使用方法：
- 开发模式：python run.py
- 生产模式：uvicorn app.main:app --host 0.0.0.0 --port 8001

作者: 张朝文
版本: 1.0.0
"""

import uvicorn
import signal
import sys
from app.core.config import settings
from app.core.logging_config import app_logger

def start_backend_server():
    """启动后端API服务器"""
    app_logger.info("=" * 60)
    app_logger.info("启动大模型集成对话系统 - 后端API服务器")
    app_logger.info("=" * 60)
    app_logger.info(f"服务器地址: http://127.0.0.1:8001")
    app_logger.info(f"调试模式: {'开启' if settings.debug else '关闭'}")
    app_logger.info(f"日志级别: {settings.log_level}")
    app_logger.info("=" * 60)
    
    try:
        uvicorn.run(
            "app.main:app",
            host="127.0.0.1",
            port=8001,
            reload=settings.debug,
            log_level=settings.log_level.lower(),
            access_log=True,
            reload_dirs=["app"] if settings.debug else None
        )
    except KeyboardInterrupt:
        app_logger.info("收到中断信号，正在停止后端服务器...")
    except Exception as e:
        app_logger.error(f"后端服务器启动失败: {str(e)}")
        sys.exit(1)

def signal_handler(signum, frame):
    """信号处理器"""
    app_logger.info(f"收到信号 {signum}，正在停止后端服务器...")
    sys.exit(0)

if __name__ == "__main__":
    """
    启动后端API服务器
    
    只启动FastAPI后端服务器，不包含MCP服务器。
    """
    # 注册信号处理器
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    
    start_backend_server()
